package com.hncc.dms.service.impl;

import java.util.List;

import com.hncc.dms.domain.DmsNonDrugItemRecord;
import com.hncc.dms.service.IDmsNonDrugItemRecordService;
import com.hncc.mq.FeeType;
import com.hncc.mq.OrderMessage;
import com.hncc.mq.rabbit.OrderMessageSender;
import com.ruoyi.common.utils.DateUtils;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import com.hncc.dms.mapper.DmsNonDrugItemRecordMapper;
import javax.annotation.Resource;

/**
 * 检查项检验项处置项记录(开立的)Service业务层处理
 * 
 * @author ruoyi
 * @date 2020-09-04
 */
@Service
@RequiredArgsConstructor
public class DmsNonDrugItemRecordServiceImpl implements IDmsNonDrugItemRecordService
{
    @Resource
    private DmsNonDrugItemRecordMapper dmsNonDrugItemRecordMapper;

    private final OrderMessageSender orderMessageSender;
    @Value("${hncc.mq.order.delayTimes}")
    private int delayTimes;

    /**
     * 查询检查项检验项处置项记录(开立的)
     * 
     * @param id 检查项检验项处置项记录(开立的)ID
     * @return 检查项检验项处置项记录(开立的)
     */
    @Override
    public DmsNonDrugItemRecord selectDmsNonDrugItemRecordById(Long id)
    {
        return dmsNonDrugItemRecordMapper.selectDmsNonDrugItemRecordById(id);
    }

    /**
     * 查询检查项检验项处置项记录(开立的)列表
     * 
     * @param dmsNonDrugItemRecord 检查项检验项处置项记录(开立的)
     * @return 检查项检验项处置项记录(开立的)
     */
    @Override
    public List<DmsNonDrugItemRecord> selectDmsNonDrugItemRecordList(DmsNonDrugItemRecord dmsNonDrugItemRecord)
    {
        return dmsNonDrugItemRecordMapper.selectDmsNonDrugItemRecordList(dmsNonDrugItemRecord);
    }

    /**
     * 新增检查项检验项处置项记录(开立的)
     * 
     * @param dmsNonDrugItemRecord 检查项检验项处置项记录(开立的)
     * @return 结果
     */
    @Override
    public int insertDmsNonDrugItemRecord(DmsNonDrugItemRecord dmsNonDrugItemRecord)
    {
        dmsNonDrugItemRecord.setCreateTime(DateUtils.getNowDate());
        dmsNonDrugItemRecordMapper.insertDmsNonDrugItemRecord(dmsNonDrugItemRecord);
        // 发送订单延迟取消消息
        orderMessageSender.sendMessage(new OrderMessage(dmsNonDrugItemRecord.getId(),
                FeeType.fromIndex(dmsNonDrugItemRecord.getType()),
                delayTimes * 1000L));
        return 1;
    }

    /**
     * 修改检查项检验项处置项记录(开立的)
     * 
     * @param dmsNonDrugItemRecord 检查项检验项处置项记录(开立的)
     * @return 结果
     */
    @Override
    public int updateDmsNonDrugItemRecord(DmsNonDrugItemRecord dmsNonDrugItemRecord)
    {
        return dmsNonDrugItemRecordMapper.updateDmsNonDrugItemRecord(dmsNonDrugItemRecord);
    }

    /**
     * 批量删除检查项检验项处置项记录(开立的)
     * 
     * @param ids 需要删除的检查项检验项处置项记录(开立的)ID
     * @return 结果
     */
    @Override
    public int deleteDmsNonDrugItemRecordByIds(Long[] ids)
    {
        return dmsNonDrugItemRecordMapper.deleteDmsNonDrugItemRecordByIds(ids);
    }

    /**
     * 删除检查项检验项处置项记录(开立的)信息
     * 
     * @param id 检查项检验项处置项记录(开立的)ID
     * @return 结果
     */
    @Override
    public int deleteDmsNonDrugItemRecordById(Long id)
    {
        return dmsNonDrugItemRecordMapper.deleteDmsNonDrugItemRecordById(id);
    }

    /**
     * 缴费|退费 查询检查项检验项处置项记录(开立的)信息列表
     * @param dmsNonDrugItemRecord
     * @return
     */
    @Override
    public List<DmsNonDrugItemRecord> selectDmsNonDrugItemRecordGetList(DmsNonDrugItemRecord dmsNonDrugItemRecord) {
        return dmsNonDrugItemRecordMapper.selectDmsNonDrugItemRecordGetList(dmsNonDrugItemRecord);
    }

    @Override
    public List<Long> selectNonDrugIdsByRegistrationIdAndType(Long registrationId, Integer type) {
        return dmsNonDrugItemRecordMapper.selectNonDrugIdsByRegistrationIdAndType(registrationId,type);
    }
}
